# 使用多阶段构建
# 第一阶段：构建前端
FROM node:18-alpine AS frontend-builder
WORKDIR /app/frontend

# 复制前端代码
COPY frontend/package*.json ./
RUN npm install
COPY frontend/ ./

# 构建前端
RUN npm run build

# 第二阶段：构建后端
FROM golang:1.23-alpine AS backend-builder
WORKDIR /app

# 添加构建依赖
RUN apk add --no-cache build-base

# 复制后端代码
COPY backend/ ./

# 设置Go模块代理
ENV GOPROXY=https://goproxy.cn,direct

# 构建后端
RUN go mod download
RUN CGO_ENABLED=1 go build -o smock-server .

# 第三阶段：最终镜像
FROM alpine:latest
WORKDIR /app

# 安装必要的依赖
RUN apk add --no-cache ca-certificates tzdata sqlite

# 设置时区
ENV TZ=Asia/Shanghai

# 创建数据目录
RUN mkdir -p /app/database

# 从构建阶段复制文件
COPY --from=backend-builder /app/smock-server /app/
COPY --from=frontend-builder /app/frontend/dist /app/public

# 暴露端口
EXPOSE 8080

# 设置环境变量
ENV GIN_MODE=release
ENV DB_PATH=/app/database/sqlite.db

# 启动命令
CMD ["/app/smock-server"]